package com.cqc.other.juc.producerConsumer.demo2;


public class ThreadTest {
    /**
     * https://pzblog.cn/java/concurrent/concurrent-consumer.html
     * 生产者和消费者设计模型的实践思路：利用 Condition await() signal() signalAll()方法实现思路
     * log：
     * 缓冲区无数据，消费者进入等待状态，Thread-0
     * 生产者，value:0，Thread-1
     * 生产者，value:1，Thread-1
     * 生产者，value:2，Thread-1
     * 缓冲区已满，生产者进入等待状态，Thread-1
     * 消费者，value:0，Thread-0
     * 消费者，value:1，Thread-0
     * 消费者，value:2，Thread-0
     * 缓冲区无数据，消费者进入等待状态，Thread-0
     * 生产者，value:3，Thread-1
     * 消费者，value:3，Thread-0
     * 生产者先生产capacity条数据，当缓冲区满的时候，生产者线程进入等待状态，并唤醒消费者，消费数据。
     * 消费者消费结束后，缓冲区没有数据了，则消费者线程进入等待状态，并唤醒生产者线程
     */
    public static void main(String[] args) {
        Container container = new Container();
        ConsumerThread consumerThread = new ConsumerThread(container);
        ProducerThread producerThread = new ProducerThread(container);

        consumerThread.start();
        producerThread.start();
    }
}
